package fmppc.common;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

/**
 * 名称: 系统通用方法
 *
 * @description:
 * @author: XXSD
 * @date: 2023-05-23 20:08
 */
public class SystemCommonMethod {

    /**
     * 功能名称: 分页对象初始化处理
     *
     * @param pageNo   页码
     * @param pageSize 每页读取数据长度
     * @return 初始化后的分页对象
     * @description:
     * @author: XXSD
     * @date: 2023-05-23 20:11
     */
    public static <T> IPage<T> givePage(Integer pageNo, Integer pageSize) {
        return new Page<>(pageNo == null || pageNo <= 0 ? 1 : SystemConstant.DEFAULT_PAGE_NO
                , pageSize == null || pageSize <= 0 ? SystemConstant.DEFAULT_PAGE_SIZE : pageSize);
    }

    /**
     * 功能名称: 分页对象初始化处理
     *
     * @param pageNo   页码
     * @param pageSize 每页读取数据长度
     * @return 初始化后的分页对象
     * @description:
     * @author: XXSD
     * @date: 2023-05-23 20:11
     */
    public static <T> IPage<T> givePage(Integer pageNo, Integer pageSize, Boolean isSearchCount) {
        return new Page<>(pageNo == null || pageNo <= 0 ? 1 : SystemConstant.DEFAULT_PAGE_NO
                , pageSize == null || pageSize <= 0 ? SystemConstant.DEFAULT_PAGE_SIZE : pageSize
                , isSearchCount == null ? Boolean.TRUE : isSearchCount);
    }

    /**
     * 功能名称: 查询对象初始化处理
     *
     * @param columns  查询最终输出数据列
     * @return 初始化后的LambdaQueryWrapper对象
     * @description:
     * @author: XXSD
     * @date: 2023-05-23 20:11
     */
    @SafeVarargs
    public static <T> LambdaQueryWrapper<T> giveLqw(SFunction<T, ?>... columns) {
        LambdaQueryWrapper<T> lqw = new LambdaQueryWrapper<>();
        if(columns!=null && columns.length>0){
            lqw.select(columns);
        }
        return lqw;
    }
}
